/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @param {number} k
 * @return {number}
 */

// function getNode(root, arr) {
//   if (!root) return;
//   getNode(root.left, arr);
//   arr.push(root.val)
//   getNode(root.right, arr);
// }
// var kthLargest = function (root, k) {
//   let arr = [];
//   getNode(root, arr);
//   return arr[arr.length - k];
// };

var kthLargest = function (root, k) {
  let max = 0;

  var getNode = function (root) {
    if (!root) return null;
    getNode(root.right);
    if (!--k) {
      return max = root.val;
    }
    getNode(root.left);
  }

  getNode(root);
  return max;
};
